package cn.com.yang.egg;


/**
 * @Author 杨亿金
 * @Date 2021/12/26 10:18
 * @CopyRight
 * @Version
 */
public class CircleNode {
    private int val;
    private CircleNode nextNode;
    public CircleNode(){}
    public CircleNode(int val){
        this.val = val;
    }

    public static void main(String[] args) {
        kill(11,3);
    }

    public static  void kill(int p,int k){
        CircleNode head = new CircleNode();
        CircleNode curr = head;
        for (int i=1;i<=p;i++){
            CircleNode node = new CircleNode(i);
            curr.nextNode = node;
            curr = node;
        }
        //链表有数据的部分首位相连成为环
        curr.nextNode = head.nextNode;
        //统计开始的时候，去除头节点，然后从第一个有数据的节点报数
        CircleNode pnd = head.nextNode;
        //循环退出的节点是剩余最后一个节点，也就是这个节点的下一个节点是他本身
        while (pnd.nextNode!=pnd){
            for (int i =1;i<k-1;i++){
                pnd = pnd.nextNode;
            }
            //当数到k的时候出局
            System.out.print(pnd.nextNode.val +"->");
            pnd.nextNode = pnd.nextNode.nextNode;
            pnd=pnd.nextNode;
        }
        //最后剩余一个
        System.out.println("left:"+pnd.val);
    }
}
